package com.zpark.oop.day06;

import org.junit.Test;

public class TestDemo {

    @Test
    public void test01(){
        // 创建Demo02对象，并且访问该对象的属性和方法
        // Demo02 d2 = new Demo02();

        // 访问类变量和类方法
        System.out.println(Demo02.sex);
        Demo02.run();

        // 创建Demo03对象，并且访问该对象的属性和方法
        Demo03 d3 = new Demo03();
        // 通过子类对象访问抽象类的成员
        d3.name = "小明";
        d3.age = 18;
        d3.eat();

        // 向上造型
        Demo02 d2 = new Demo03();
        d2.name = "小明";
        d2.age = 18;
        d2.eat();
    }

    @Test
    public void test02(){
        // 访问接口当中的常量和静态方法  语法：接口名字.常量名    接口名.静态方法名(参数)
        String name = InterFaceDemo01.NAME;
        InterFaceDemo01.show();

        // 创建接口实现类的对象
        Demo05 d5 = new Demo05();
        d5.sleep();

        // 接口不允许实例化
        // InterfaceDemo02 interfaceDemo02 = new InterfaceDemo02();

        // 向上造型
        InterfaceDemo02 id2 = new Demo05();
        InterFaceDemo01 id1 = new Demo05();
    }

    /**
     * 测试成员内部类
     */
    @Test
    public void test03(){
        // 创建普通类对象
        OuterDemo01 outer = new OuterDemo01();
        outer.address = "上海";
        // 创建成员内部类对象
        OuterDemo01.InnerDemo01 inner = outer.new InnerDemo01();
        // 访问内部类的成员
        inner.show();
        inner.address = "北京";
    }

    /**
     * 测试静态内部类
     */
    @Test
    public void test04(){
        // 创建静态内部类对象
        OuterDemo02.Inner inner = new OuterDemo02.Inner();
        // 访问内部类的静态成员
        OuterDemo02.Inner.name = "zpark";
    }
}
